GetUserAdministrativeByIdQueryHandler   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 38
dl 0
loc 42
c 0
b 0
f 0
rs 10

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 33 3
1
import { Inject } from '@nestjs/common';
2
import { QueryHandler } from '@nestjs/cqrs';
3
import { UserNotFoundException } from 'src/Domain/HumanResource/User/Exception/UserNotFoundException';
4
import { IUserAdministrativeRepository } from 'src/Domain/HumanResource/User/Repository/IUserAdministrativeRepository';
5
import { IUserRepository } from 'src/Domain/HumanResource/User/Repository/IUserRepository';
6
import { UserAdministrativeView } from '../View/UserAdministrativeView';
7
import { UserView } from '../View/UserView';
8
import { GetUserAdministrativeByIdQuery } from './GetUserAdministrativeByIdQuery';
9
import { GetUserByIdQuery } from './GetUserByIdQuery';
10
11
@QueryHandler(GetUserAdministrativeByIdQuery)
12
export class GetUserAdministrativeByIdQueryHandler {
13
  constructor(
14
    @Inject('IUserRepository')
15
    private readonly userRepository: IUserRepository,
16
    @Inject('IUserAdministrativeRepository')
17
    private readonly userAdministrativeRepository: IUserAdministrativeRepository
18
  ) {}
19
20
  public async execute(query: GetUserByIdQuery): Promise<UserView> {
21
    const user = await this.userRepository.findOneById(query.id);
22
    if (!user) {
23
      throw new UserNotFoundException();
24
    }
25
    const userAdministrative = await this.userAdministrativeRepository.findOneByUserId(
26
      query.id
27
    );
28
29
    let userAdministrativeView: UserAdministrativeView = null;
30
    if (userAdministrative) {
31
      userAdministrativeView = new UserAdministrativeView(
32
        userAdministrative.getAnnualEarnings() * 0.01,
33
        userAdministrative.getContract(),
34
        userAdministrative.getWorkingTime(),
35
        userAdministrative.isExecutivePosition(),
36
        userAdministrative.haveHealthInsurance(),
37
        userAdministrative.getJoiningDate(),
38
        userAdministrative.getLeavingDate(),
39
        userAdministrative.getTransportFee() * 0.01,
40
        userAdministrative.getSustainableMobilityFee() * 0.01
41
      );
42
    }
43
44
    return new UserView(
45
      user.getId(),
46
      user.getFirstName(),
47
      user.getLastName(),
48
      user.getEmail(),
49
      user.getRole(),
50
      user.isAdministrativeEditable(),
51
      userAdministrativeView
52
    );
53
  }
54
}
55